perm filename NOTAT.ION[L70,TES] blob
sn#017424 filedate 1972-12-13 generic text, type T, neo UTF8
00100 ADDITIONS TO MLISP SYNTAX TO ACCOMODATE REWRITE RULES:
00200 --------- -- ----- ------ -- ---------- ------- -----
00300
00400 <BASIC> = `{' <PATTERN> `}'
00500
00600 <PRIMARY> = `<' <IDENTIFIER> `>' <RLAMBDA_BODY>
00700
00800
00900 REWRITE SYNTAX:
01000 ------- ------
01100
01200 <RLAMBDA_BODY> = ⊂REPEAT {`=' <PATTERN> `→' <PATTERN>} `;'⊃
01300
01400 <PATTERN> = ⊂REPEAT <ITEM>⊃ ⊂OPT <PREDICATION>⊃ ⊂OPT <CAUSATION>⊃
01500
01600 <PREDICATION> = `[' <EXPRESSION> `]'
01700
01800 <CAUSATION> = `&' <EXPRESSION>
01900
02000 <ITEM> = <LITERAL_ITEM>
02100 = <ITERATED_ITEM>
02200 = <EVAL_ITEM>
02300 = <APPLY_ITEM>
02400 = <MODAL>
02500 = `{' <PATTERN> `}'
02600
02700 <LITERAL_ITEM> = <IDENTIFIER>
02800 = <NUMBER>
02900 = <STRING>
03000 = `≡`' ⊂REPEAT <DELIMITER>⊃ `≡''
03100 = `(' <PATTERN> `)'
03200 = `(' <PATTERN> `.' <PATTERN> `)'
03300
03400 <ITERATED_ITEM> = `⊂' REPEAT <ITEM> <PATTERN> `⊃'
03500 = `⊂' ALT ⊂REPEAT <PATTERN> `|'⊃ `⊃'
03600 = `⊂' OPT <PATTERN> `⊃'
03700
03800 <EVAL_ITEM> = <COLONS> <IDENTIFIER>
03900 = <COLONS> `$' <IDENTIFIER>
04000 = <COLONS> `(' <EXPRESSION> `)'
04100 = <COLONS> `[' <ITEM> <PATTERN> `]'
04200 = <COLONS> `{' <EXPRESSION> `}'
04300 = `..'
04400 = `...'
04500
04600 <APPLY_ITEM> = <ITEM> `@' <ITEM>
04700 = <ITEM> `@@' <ITEM>
04800 = <ITEM> `*'
04900 = <ITEM> `**'
05000
05100 <MODAL> = `<' <ITEM> <PATTERN> `>'
05200
05300 <COLONS> = `:'
05400 = `::'
05500 EXAMPLES
05600 ________
05700
05800 <EQ> = :X :X → T ;
05900 = :X :Y → NIL ;
06000
06100 <ASSOC> = :X (... (:X ::Y)) → (:X ::Y) ;
06200 = ... → NIL ;
06300
06400 <TERM> = <FACTOR:X> `*' <FACTOR:Y> → (TIMES :X :Y) ;
06500 = <FACTOR:X> `/' <FACTOR:Y> → (QUOTIENT :X :Y) ;
06600 = ... → :[FAIL] ;
06700
06800 <FACTORIAL> = 0 → 1 ;
06900 = <INTEGER:N> [:N > 0] → :[TIMES :N :(N-1)*] ;
07000
07100 <GO_IN> = :ROBOT :ROOM [BE_IN(:ROBOT,:ROOM)] → ;
07200 = :ROBOT :ROOM [BE_IN(:ROBOT,:R) ∧ HAS(:ROOM,:DOOR) ∧ HAS(:R,:DOOR)] →
07300 & GO_DOOR(:ROBOT, :DOOR) ALSO GO_IN(:ROOM) ;
07400 = ... → :[FAIL] ;
07500
07600 <RECOVER> = &BUMP(:ROBOT,:WALL) → &BACKOFF(:ROBOT,:WALL) ALSO REPLAN(THISPLAN) ;
07800
07900 <ROOTS> = :{ :A*:X↑:2 + :B*:X + :C } →
08000 :((-B+SQRT(B*B-4*A*C))/(2*A))
08100 :((-B-SQRT(B*B-4*A*C))/(2*A)) ;
08200 = :{ :A*:X + :B } → :(-B/A) ;
08300 = :X → {} & PRINT("CAN'T SOLVE {:X@{INVERSE EXPRESSION}} = 0") ;